package interfaceGrafica;

import negocios.*;
import persistencia.*;
import javax.swing.JLayeredPane;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;

@SuppressWarnings("serial")
public class MenuTreinamento extends JLayeredPane {
	private Partida partida;
	private Treinamento treinamento;
	private Repositorio repositorio;

	private PainelEasy painel;
	private Janela janela;
	private JLabel background;
	private MenuPrincipal menuPrincipal;

	private JButton easy;
	private JButton medium;
	private JButton hard;
	private JButton back;

	private ImageIcon backgroundImagem;
	private ImageIcon easyImagem1;
	private ImageIcon easyImagem2;
	private ImageIcon easyImagem3;
	private ImageIcon mediumImagem1;
	private ImageIcon mediumImagem2;
	private ImageIcon mediumImagem3;
	private ImageIcon hardImagem1;
	private ImageIcon hardImagem2;
	private ImageIcon hardImagem3;
	private ImageIcon backImagem1;
	private ImageIcon backImagem2;
	private ImageIcon backImagem3;

	public MenuTreinamento(Janela janela, MenuPrincipal menuPrincipal,
			Partida partida) {
		super();

		this.partida = partida;

		backgroundImagem = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\background.png");
		easyImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\easyImagem1.png");
		easyImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\easyImagem2.png");
		easyImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\easyImagem3.png");
		mediumImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\mediumImagem1.png");
		mediumImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\mediumImagem2.png");
		mediumImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\mediumImagem3.png");
		hardImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\hardImagem1.png");
		hardImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\hardImagem2.png");
		hardImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\hardImagem3.png");
		backImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\backImagem1.png");
		backImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\backImagem2.png");
		backImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\backImagem3.png");

		this.janela = janela;
		this.menuPrincipal = menuPrincipal;
		this.background = new JLabel();
		this.background.setIcon(backgroundImagem);
		this.background.setBounds(0, 0, 800, 600);
		super.add(background, JLayeredPane.DEFAULT_LAYER);

		easy = new JButton();
		MenuPrincipal.inicializarBotao(this, easy, easyImagem1, easyImagem2,
				easyImagem3, 100, 210, easyImagem1.getIconWidth(),
				easyImagem1.getIconHeight());
		easy.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(easy, 1);
			}

		});

		medium = new JButton();
		MenuPrincipal.inicializarBotao(this, medium, mediumImagem1,
				mediumImagem2, mediumImagem3, 100, 290,
				mediumImagem1.getIconWidth(), mediumImagem1.getIconHeight());
		medium.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(medium, 2);
			}
		});

		hard = new JButton();
		MenuPrincipal.inicializarBotao(this, hard, hardImagem1, hardImagem2,
				hardImagem3, 100, 370, hardImagem1.getIconWidth(),
				hardImagem1.getIconHeight());
		hard.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(hard, 3);
			}
		});

		back = new JButton();
		MenuPrincipal.inicializarBotao(this, back, backImagem1, backImagem2,
				backImagem3, 100, 450, backImagem1.getIconWidth(),
				backImagem1.getIconHeight());
		back.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(back, 4);
			}
		});

	}

	private void mouseClicar(JButton botao, int escolha) {
		switch (escolha) {
		case 1:
			repositorio = new Repositorio();
			try {
				repositorio.lerArquivo("Data//Arquivos//Easy.txt");
			} catch (IOException e) {
				System.out
						.println("Erro na leitura do arquivo Data//Arquivos//Easy.txt");
			}
			treinamento = new Treinamento("Easy");
			partida.setModoDeJogo(treinamento);
			partida.getModoDeJogo().getGerenciadorDeVerbos()
					.carregarVerbos(repositorio.escreverArquivo());
			partida.getModoDeJogo().proximaJogada();
			painel = new PainelEasy(janela, menuPrincipal, treinamento,
					partida.getNomeDoJogador());
			janela.setContentPane(painel);
			painel.iniciarJogada();
			janela.pack();
			break;

		case 2:
			repositorio = new Repositorio();
			try {
				repositorio.lerArquivo("Data//Arquivos//Medium.txt");
			} catch (IOException e) {
				System.out
						.println("Erro na leitura do arquivo Data//Arquivos//Medium.txt");
			}
			treinamento = new Treinamento("Medium");
			partida.setModoDeJogo(treinamento);
			partida.getModoDeJogo().getGerenciadorDeVerbos()
					.carregarVerbos(repositorio.escreverArquivo());
			partida.getModoDeJogo().proximaJogada();
			painel = new PainelMedium(janela, menuPrincipal, treinamento,
					partida.getNomeDoJogador());
			janela.setContentPane(painel);
			painel.iniciarJogada();
			janela.pack();
			break;

		case 3:
			repositorio = new Repositorio();
			try {
				repositorio.lerArquivo("Data//Arquivos//Hard.txt");
			} catch (IOException e) {
				System.out
						.println("Erro na leitura do arquivo Data//Arquivos//Hard.txt");
			}
			treinamento = new Treinamento("Hard");
			partida.setModoDeJogo(treinamento);
			partida.getModoDeJogo().getGerenciadorDeVerbos()
					.carregarVerbos(repositorio.escreverArquivo());
			partida.getModoDeJogo().proximaJogada();
			painel = new PainelHard(janela, menuPrincipal, treinamento,
					partida.getNomeDoJogador());
			janela.setContentPane(painel);
			painel.iniciarJogada();
			janela.pack();
			break;

		case 4:
			janela.setContentPane(menuPrincipal);
			janela.pack();
			break;

		default:

			break;
		}
	}
}
